"""所有模块及试图的主枢纽"""
from module.logic_module.file_manager.model import FileManagerModel
from module.static_module.main_window.view import MainWindowView
from module.static_module.main_window.model import MainWindowModel
from module.static_module.running.model import RunningModel
from module.static_module.operate.model import OperateModel
from module.static_module.file_info.model import FileInfoModel
from module.static_module.file_action.model import FileActionModel


class MasterModel:
    def __init__(self):
        # 收集基本数据，包括该model下的所有数据信息
        self.file_manager = None

        self.dynamic_module_model_dc = {}

        self.main_window_model = None
        self.running_model = None
        self.operate_model = None
        self.file_info_model = None
        self.file_action_model = None

        self.main_window_view = None

    def sec_init(self):
        # 创建文件管理实例
        self.file_manager = FileManagerModel(self)
        self.file_manager.gen_data_def_group()
        self.file_manager.gen_describe()

    def third_init(self):
        from core.map_obj import ModuleModelMap

        # 创建主窗口实体类
        self.main_window_model = MainWindowModel(self)
        self.main_window_model.sec_init()
        # 创建模块类
        self.dynamic_module_model_dc[self.file_manager.now_dynamic_module] = ModuleModelMap[self.file_manager.now_dynamic_module](self)  # 获取后实例化
        self.dynamic_module_model_dc[self.file_manager.now_dynamic_module].sec_init()
        # 创建running
        self.running_model = RunningModel(self)
        # 创建operate
        self.operate_model = OperateModel(self)
        # 创建file_info
        self.file_info_model = FileInfoModel(self)
        # 创建file_action
        self.file_action_model = FileActionModel(self)
        # 创建主界面视图类
        self.main_window_view = MainWindowView(self)

        # ----------------------------------------------
        # 界面、模块（动态与固定）、文件管理均配置完成，配置依赖ui界面的日志引擎
        # 为file manager配置全局日志引擎
        self.file_manager.config_log_engine()
        # 配置running日志引擎
        self.running_model.config_log_engine()
        # 配置operate日志引擎
        self.operate_model.config_log_engine()
        # 配置operate run status日志引擎
        self.file_manager.run_status.config_log_engine()
        # 执行二次初始化
        self.running_model.sec_init()

    def mainloop(self):
        self.main_window_view.root.mainloop()


